1. Technical Field
The present invention is directed to an apparatus and method for offloading application components to edge servers. More specifically, the present invention is directed to an apparatus and method for identifying application components that may be run from an edge server and transferring these components to an edge server when a request is received from a client device.
2. Description of Related Art
Proxy servers, also referred to as “proxies,” are generally known in the art. A proxy server is a server or an application that breaks the connection between a client and a server and performs some operations on behalf of the original server. Proxy servers are available for common Internet services. For example, an HTTP proxy is used for Web access and an SMTP proxy is used for e-mail. As an example, a proxy server may perform the operation of network address translation (NAT), which presents one organization-wide IP address to the Internet. The network address translation funnels all user requests to the Internet and fans responses back out to the appropriate users.
Proxies are generally located closer, in terms of network topology, to client devices than content servers. Because proxies are closer to the client devices, proxies have been used to cache Web pages, so that the next request can be obtained locally. By caching Web pages locally, a performance enhancement is obtained since the performance is not degraded by bandwidth and content, or origin, server performance limitations.
The current state of the art limits the use of proxy caching, however, to static or infrequently changing content, such as the Web pages previously mentioned. There is very limited ability to cache dynamically changing content on a proxy. While there is some support for running components of an application at another machine in the current art, e.g. Java applets or active networking, using these techniques requires a fundamental change in the way applications are written and programmed.
In the current state of the art, the development of application components is done by using the software packages provided in accordance with a distributed execution programming model. Programs written to run on web-servers, for example, are written to be compliant with the Java programming model, and can be composed as Java Servlets or as Java Server Pages (JSPs). Since most applications are developed with the assumption that they will run on a single server, there is not much support provided for distributing them. Server software that allows the execution of servlets and JSPs are commonly called web application servers.
As a result, the current state of the art can not support running components of an application written to traditional programming models at a proxy server. Therefore, it would be beneficial to have an apparatus and method for automatically identifying components of an application, written using the traditional programming model, that may be run by an edge server, or proxy, and executing those components on the edge server.